package edu.zut.cs.javaee.manager.department.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.ExampleMatcher;

import org.springframework.data.domain.ExampleMatcher.GenericPropertyMatchers;
import org.springframework.data.domain.ExampleMatcher.StringMatcher;
import org.springframework.stereotype.Service;



import edu.zut.cs.javaee.manager.base.service.impl.GenericTreeManagerImpl;
import edu.zut.cs.javaee.manager.department.dao.DepartmentDao;
import edu.zut.cs.javaee.manager.department.domain.Department;
import edu.zut.cs.javaee.manager.department.service.DepartmentManager;



/**
 * Managerdao
 * @author 57281
 *
 */
@Service(value="departmentManager")
public class DepartmentManagerimpl extends GenericTreeManagerImpl<Department,Long> implements DepartmentManager {

	
	DepartmentDao departmentDao;

	
	@Autowired
	public void setDepartmentDao(DepartmentDao departmentDao) {
		this.departmentDao = departmentDao;
		this.dao=this.departmentDao;
	}

	/**
	 * @Override
	 * 
	 * findByName by department.name
	 */

	@Override
	public List<Department> findByName(String sname) {
		Department querydepart=new Department();
		querydepart.setSname(sname);
		ExampleMatcher matcher = ExampleMatcher.matching() // 构建对象
				.withStringMatcher(StringMatcher.CONTAINING) // 改变默认字符串匹配方式：模糊查询
				.withMatcher("sname", GenericPropertyMatchers.contains()) //采用“开始匹配”的方式查询
				.withIgnorePaths("dateCreated", "dateModified"); // 忽略属性：是否关注。因为是基本类型，需要忽略掉
		// 创建实例并查询
		Example<Department> ex = Example.of(querydepart, matcher);
		List<Department> result=this.departmentDao.findAll(ex);
		return result;
	}

	@Override
	public List<Department> findById(String sno) {
		Department querydepart=new Department();
		querydepart.setSname(sno);
		ExampleMatcher matcher = ExampleMatcher.matching() // 构建对象
				.withStringMatcher(StringMatcher.CONTAINING) // 改变默认字符串匹配方式：模糊查询
				.withMatcher("sno", GenericPropertyMatchers.contains()) //采用“开始匹配”的方式查询
				.withIgnorePaths("dateCreated", "dateModified"); // 忽略属性：是否关注。因为是基本类型，需要忽略掉
		// 创建实例并查询
		Example<Department> ex = Example.of(querydepart, matcher);
		List<Department> result=this.departmentDao.findAll(ex);
		return result;
	}

	@Override
	public List<Department> deleteById(String sno) {
		// TODO Auto-generated method stub
		return null;
	}

//	@Override
//    public  Department findById(Long id)
//    {
//        return this.departmentDao
//    }
	

}